/*  编写一个程序，接受用户输入的一个字符串，并判断该字符串是否为有效的邮箱地址。 */
/*
实现方式：该字符串中必须包含"@"字符串和"."字符串。
"@"不能出现在第一个位置，并且"@"位置大于"."；而且"@"和"."之间要有内容。
"."以后的字符串必须是com或cn或net。
*/

/* strcmp */

#include <stdio.h>
#include <string.h>

/* 判断 @是不是位于 . 之前 并且@和.不相邻 */
int compareChar1(const char *str, int len, int *pos)
{
    for(int idx = 0; idx < len; idx++)
    {
        /* 字符比较是ASCII码值比较@<. */
        if((str[idx] == '@') < '.')
        {
            if(str[idx + 1] != '.')
            {
                *pos = idx;
                return 1;
            }
        }
    }
    return 0;   
}

/* 确定 . 的位置 */
char compareChar2(const char *str, int *pos, int len)
{
    int jdx = *pos;
    for(int idx = jdx + 1; idx < len-3; idx++)
    {
        if(str[idx] == '.')
        {
            *pos = idx;
            return 1;
        }
    }
}


/* 确定 . 之后是否为com或cn或net */
int compareChar3(const char *str, int *pos, int len)
{
    int idx = *pos;
    int ret =strlen(str + idx);
    if(ret != 3)
    {
        if(str[idx + 1] == 'c' && str[idx + 2] == 'n')
        {
            return 6;
        }
    }
    else if(str[idx + 1] == 'c' && str[idx + 2] == 'o' && str[idx + 3] == 'm')
    {
        return 6;
    }
    else if(str[idx + 1] == 'n' && str[idx + 2] == 'e' && str[idx + 3] == 't') 
    {
        return 6;
    }
    else
        return 4;     
}


/* 打印 */
int pribtfChar(const char *str, int ret)
{
    if(ret != 4)
    {
        printf("%s该字符串是有效的邮箱地址\n", str);
        return 0;
    }
    else 
    {
        printf("%s该字符串不是有效的邮箱地址\n", str);
        return 0;
    }
}

char compareChar(const char *str)
{
    int pos = 0;
    int len = strlen(str);
    printf("len:%d\n", len);
    //printf("len:%c\n", str[0]);
    while(str[0] != '@' && str[0] != '.')
    {
        /* 判断 @是不是位于 . 之前 并且@和.不相邻 */
        int ret = compareChar1(str, len, &pos);
        if( ret == 1)
        {
            int ret1 = compareChar2(str, &pos, len);
            int ret2 = compareChar3(str, &pos, len);
            pribtfChar(str,ret2);
        }

        return 0;
    }
    return 0;
}


int main()
{
    char *str = "1689136822@qq.com";
    printf("原字符串str：%s\n", str);

    compareChar(str);
    return 0;

}